package org.geekbang.projects.rest.core;

import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.MultivaluedHashMap;
import javax.ws.rs.core.NewCookie;
import javax.ws.rs.core.Response;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URI;
import java.util.Date;
import java.util.HashSet;
import java.util.Locale;
import java.util.Map;

public abstract class HttpResponse extends Response {


	/**
	 * 设置支持反复
	 * @param allowedMethods
	 */
	public abstract void setAllowedMethods(HashSet<String> allowedMethods);

	/**
	 * 设置cookies
	 * @param cookies
	 */
	public abstract void setCookies(Map<String, NewCookie> cookies);

	/**
	 * 设置请求头列表
	 * @param headers
	 */
	public abstract void setHeaderString(MultivaluedHashMap<String, String> headers);


	/**
	 * 设置地域
	 * @param locale
	 */
	public abstract void setLanguage(Locale locale);

	/**
	 * 设置最后变更时间
	 * @param lastModified
	 */
	public abstract void setLastModified(Date lastModified);

	/**
	 * 设置响应体长度
	 * @param length
	 */
	public abstract void setLength(int length) ;

	/**
	 * 设置 location 用于 重定向和请求资源转移
	 * @param location
	 */
	public abstract void setLocation(String location);

	/**
	 * 设置响应类型
	 * @param mediaType
	 */
	public abstract void setMediaType(MediaType mediaType);


	/**
	 * 设置响应状态
	 * @param status
	 */
	public abstract void setStatus(int status);

	/**
	 * 设置连接
	 * @param connection
	 */
	public abstract void setConnection(HttpURLConnection connection);

}
